require([
    "Acaweb.AjaxRequest",
    "jquery", 
    "init",
    "jQuery.Tools.OverLay",
    ], function(Acaweb, $){           
        var indexUn;
        var indexLab;
        var ultimaUniversidadLlena;
        var ultimaLaboralLlena; 
        if($("#lastUniversity").data("position") == 0){
            indexUn = $("#lastUniversity").data("position");
        }else{
            indexUn = -1;
        }
        if($("#lastLaboralHistory").data("position") == 0){
            indexLab = $("#lastLaboralHistory").data("position");
        }else{
            indexLab = -1;
        }
        
        $('#planEstudio').change(function(){
            var tipoPrograma = $('#planEstudio option:selected').data('tipo-programa');
            if(tipoPrograma != 0 && tipoPrograma != 5){
                $('#Academicos').find('.required_').attr('readonly', 'readonly');
                $('#Academicos').find('.fecha').removeClass('date');
                $('#Academicos').find('.required_').removeClass('required_').addClass('_required');
            } else {
                $('#Academicos').find('._required').removeAttr('readonly');
                $('#Academicos').find('.fecha').addClass('date');
                $('#Academicos').find('._required').removeClass('_required').addClass('required_');
            }
        });
        
        function filaUniversidad (){ 
            return $("<tr data-position="+indexUn+">")
                .append($("<td>").append($("<input>").attr("type","text").attr("id","yearUniversity_"+indexUn).attr("class","small number").attr("name","estudianteNuevo[UniversidadesSolicitadas]["+indexUn+"][anio_historial_estudios]")))
                .append($("<td>").append($("<input>").attr("type","text").attr("id","placeUniversity_"+indexUn).attr("class","medium").attr("name","estudianteNuevo[UniversidadesSolicitadas]["+indexUn+"][institucion_historial_estudios]")))
                .append($("<td>").append($("<select>").attr("id","sectorUniversity_"+indexUn).attr("name","estudianteNuevo[UniversidadesSolicitadas]["+indexUn+"][sector_historial_estudios]")
                                            .append($("<option>").attr("value","01").text("Privado"))
                                            .append($("<option>").attr("value","02").text("Publico"))))
                .append($("<td>").append($("<input>").attr("type","text").attr("id","programUniversity_"+indexUn).attr("class","smallxl").attr("name","estudianteNuevo[UniversidadesSolicitadas]["+indexUn+"][programa_historial_estudios]")))
                .append($("<td>").append($("<button>").attr("class","borrarRegistro small icon i_trashcan").text("Borrar")));
        }
        
        function filaInfoLaboral (){ 
            return $("<tr data-position="+indexLab+">")
                .append($("<td>").append($("<input>").attr("type","text").attr("id","nameLaboral_"+indexLab).attr("class","smallxl nombreLaboral").attr("name","estudianteNuevo[Informacion_Laboral]["+indexLab+"][nombre_empresa_informacion_laboral]")))
                .append($("<td>").append($("<select>").attr("id","typeLaboral_"+indexLab).attr("name","estudianteNuevo[Informacion_Laboral]["+indexLab+"][tipo_empresa_informacion_laboral]")
                                            .append($("<option>").attr("value","01").text("Medio Tiempo"))
                                            .append($("<option>").attr("value","02").text("Tiempo Completo"))
                                            .append($("<option>").attr("value","03").text("Tiempo Parcial"))))
                .append($("<td>").append($("<input>").attr("type","text").attr("id","ocupationLaboral_"+indexLab).attr("class","smallxl cargoLaboral").attr("name","estudianteNuevo[Informacion_Laboral]["+indexLab+"][cargo_informacion_laboral]")))
                .append($("<td>").append($("<input>").attr("type","text").attr("id","from_"+indexLab).attr("class","small from").attr("placeholder", "Desde").attr("name","estudianteNuevo[Informacion_Laboral]["+indexLab+"][fecha_inicio_informacion_laboral]"))
                .append($("<input>").attr("type","text").attr("id","to_"+indexLab).attr("class","small to").attr("placeholder", "Hasta").attr("name","estudianteNuevo[Informacion_Laboral]["+indexLab+"][fecha_fin_informacion_laboral]")))
                //.append($("<td>").append($("<input>").attr("type","text").attr("class","smallxl").attr("name","estudianteNuevo[Informacion_Laboral]["+indexLab+"][direccion_informacion_laboral]")))
                .append($("<td>").append($("<button>").attr("class","borrarRegistro small icon i_trashcan").text("Borrar")));
        }
        
        $('#documentoIdentidad').focusout(function() {
            var url = $("#url").text() + "&Cedula=" + $(this).val();
            if (url) {
                if($.isNumeric($(this).val())){
                    window.location = url;
                }
            }
        });
        
        $('#grardarParcial').live("click", function(){
            if(!$("#agreed").is(":checked")){
                alert("Debe estar de acuerdo con los Términos y condiciones");
                return false;
            }
        });
        
        $('#finalizarButton').live("click", function(){
            if(!$("#agreed").is(":checked")){
                alert("Debe estar de acuerdo con los Términos y condiciones");
                return false;
            }
            if(confirm("¿Desea Finalizar la inscripcion?\n\nNota: Todos los campos son requeridos y sus datos no podran ser modificados posteriormente")){
                $("#ActualizarDatosForm").find(".required_").switchClass("required_","required");
                $("#finalizar").val("1");
                return true;
            }else{
                return false;
            }
        });
        
        function ultimoRegistroLleno(){
            var last;
            if(indexLab == -1){
                ultimaLaboralLlena = true;
            }else{
                last = $("#informacionLaboral tbody").children().last().data("position");
                if(last == null){
                    ultimaLaboralLlena = true;
                }else{
                    if($("#nameLaboral_"+last).val() && $("#ocupationLaboral_"+last).val()){
                        ultimaLaboralLlena = true;
                    }
                }
            }
            
            if(indexUn == -1){
                ultimaUniversidadLlena = true;
            }else{
                last = $("#universidades tbody").children().last().data("position");
                if(last == null){
                    ultimaUniversidadLlena = true;
                }else{
                    if($("#yearUniversity_"+last).val() && $("#placeUniversity_"+last).val() && $("#programUniversity_"+last).val()){
                        ultimaUniversidadLlena = true;
                    }
                }
            }
        }
    
    
        $("#agregarUniversidad").live("click",function(){
            ultimoRegistroLleno();
            
            if(ultimaUniversidadLlena){
                indexUn = indexUn+1;
                $("#universidades tbody").append(filaUniversidad());
                
                ultimaUniversidadLlena = false;
            }
            return false;
        });
        
        $("#agregarInfoLaboral").live("click",function(){
            
            ultimoRegistroLleno();
            
            if(ultimaLaboralLlena){
                indexLab = indexLab+1;
                $("#informacionLaboral tbody").append(filaInfoLaboral());

                $(".from").removeClass("hasDatePicker");
                $(".to").removeClass("hasDatePicker");

                registerDateRange($(".from"), $(".to"));
                
                ultimaLaboralLlena = false;
            }            
            return false;
        });
        
        $('#otroParentesco').hide();
        
        function llenarCampos(valor){
            if(valor == null){
                valor = "";
                $("#nombreAcudiente").val(valor).removeAttr("readonly");
                $("#direccionAcudiente").val(valor).removeAttr("readonly");
                $("#telefonoAcudiente").val(valor).removeAttr("readonly");
                $("#movilAcudiente").val(valor).removeAttr("readonly");
                $("#emailAcudiente").val(valor).removeAttr("readonly");
                $("#nivelAcudiente").val(valor).removeAttr("disabled");
                $("#ocupacionAcudiente").val(valor).removeAttr("readonly");
                $("#empresaAcudiente").val(valor).removeAttr("readonly");
            }else{
                $("#nombreAcudiente").val($("#nombre"+valor).val()).attr("readonly", "readonly");
                $("#direccionAcudiente").val($("#direccion"+valor).val()).attr("readonly", "readonly");
                $("#telefonoAcudiente").val($("#telefono"+valor).val()).attr("readonly", "readonly");
                $("#movilAcudiente").val($("#movil"+valor).val()).attr("readonly", "readonly");
                $("#emailAcudiente").val($("#email"+valor).val()).attr("readonly", "readonly");
                $("#nivelAcudiente").val($("#nivel"+valor).val()).attr("disabled", "disabled");
                $("#ocupacionAcudiente").val($("#ocupacion"+valor).val()).attr("readonly", "readonly");
                $("#empresaAcudiente").val($("#empresa"+valor).val()).attr("readonly", "readonly");
            }
        }
        
        if($("#selectParentesco").val() == "1"){
            llenarCampos("Padre")
        }else{
            if($("#selectParentesco").val() == "2"){
                llenarCampos("Madre")
            }
        }
        
        if ($("#selectParentesco").val()=='6'){
            $('#otroParentesco').show();
        }
        
        $(".familiar").keyup(function(){
            if($("#selectParentesco").val() == "1"){
                llenarCampos("Padre")
            }else{
                if($("#selectParentesco").val() == "2"){
                    llenarCampos("Madre")
                }
            }
        });
        
        $(".nivel").change(function(){
            if($("#selectParentesco").val() == "1"){
                llenarCampos("Padre")
            }else{
                if($("#selectParentesco").val() == "2"){
                    llenarCampos("Madre")
                }
            }
        });
        
        $("#selectParentesco").change(function(){
            if ($(this).val()=='6'){
                llenarCampos(null);
                $('#otroParentesco').show();
                $('#parentesco').val('');
            }else{
                if ($(this).val()=='1'){
                    llenarCampos("Padre");
                } else {
                    if ($(this).val()=='2'){
                        llenarCampos("Madre");
                    } else {
                        llenarCampos(null);
                    }                 
                }
                $('#otroParentesco').hide();
                $('#parentesco').val($(this).val());
            }
        });
        
        $('#externa').hide();
        
        if ($("#tipoInscripcion").val()=='2'){
            $('#externa').show();
        }
        
        $("#tipoInscripcion").change(function(){
            if ($(this).val()=='1'){
                $('#externa').show();
            }else{
                $('#externa').hide();
            }
        });
        
        $('.graduado').hide();
        
        $("#selectGraduado").change(function(){
            if ($(this).val()=='1'){
                $('.graduado').show();
            }else{
                $('.graduado').hide();
            }
        });
        
        if ($("#selectGraduado").val()=='1'){
            $('.graduado').show();
        }
        
        /*OverLay*/
        $("#ayudaPruebasSaber11").overlay({
            mask: {
                color: '#000',
                loadSpeed: 200,
                opacity: 0.6
            },
            closeOnClick: false
        });
    
        $(".borrarRegistro").live("click",function(){
            if ($(this).data("iduniversity")) {
                $("#deletedUniversities").val($("#deletedUniversities").val() + $(this).data("iduniversity") + "_");
            }
            if ($(this).data("idlaboralhistory")) {
                $("#deletedLaboralHistory").val($("#deletedLaboralHistory").val() + $(this).data("idlaboralhistory") + "_");
            }
            $(this).parent().parent().remove();
            return false;
        });
    
        $( ".fecha" ).datepicker({
            yearRange: 'c-50:c+0',
            changeMonth: true,
            changeYear: true
        });
        
        $(".fechaNacimiento" ).datepicker({
            defaultDate: '-17y',
            yearRange: 'c-60:c+17',
            changeMonth: true,
            changeYear: true
        });
        
        registerDateRange($(".from"), $(".to"));
        
        function registerDateRange(dateFrom, dateTo){
            dateFrom.datepicker({
                changeMonth: true,
                changeYear: true,
                onSelect: function(dateText, inst){ 
                    var cadena = inst.id;
                    var pos = cadena.indexOf("_");
                    var index = cadena.substring(pos+1, cadena.length);
                    
                    var oldDate = new Date(dateText);
                    
                    $("#to_"+index).datepicker('option', 'minDate', oldDate);


                }
            });

            dateTo.datepicker({
                changeMonth: true, 
                changeYear: true,
                onSelect: function(dateText, inst){ 
                    var cadena = inst.id;
                    var pos = cadena.indexOf("_");
                    var index = cadena.substring(pos+1, cadena.length);

                    // Capture the Date from User Selection
                    var endDate = new Date(dateText);

                    $("#from_"+index).datepicker('option', 'maxDate', endDate);

                }

            });
        }
        
        $("#BarrioField").hide();
        $("#municipioRes").change(function(){
            mostrarOcultarBarrio($(this));
        });
        
        function mostrarOcultarBarrio(object){
            if(object.val() == "13001"){
                $("#BarrioField").show();
                $("#barrioSelect").toggleClass("required_");
            }else{
                $("#BarrioField").hide();
                $("#barrioSelect").toggleClass("required_");
            }
        }
        
        cargarDepartamentos($("#paisNac").val($("#paisNacSeleccionado").val()));
        cargarDepartamentos($("#paisRes").val($("#paisResSeleccionado").val()));
        cargarDepartamentos($("#paisCol").val($("#paisColSeleccionado").val()));
    
        /*Enlace de Ciudades con paises*/
        $.ajaxSetup({
            cache: false
        });
    
        $(".location-country").change(function(){
            cargarDepartamentos($(this));
        });
                
        $(".location-state").change(function(){
            cargarCiudades($(this));
        });
        
        
        function cargarDepartamentos(pais){
            var self = pais;
            var place = self.data("place");
            var state = $('.location-state[data-place="' + place + '"]');
            
            state.html("");
            $('.location-city[data-place="' + place + '"]').html("");
            
            var valor = self.val();
            
            var locaciones = new Acaweb.Locaciones();
                
            locaciones.error = function(a,b,c){
                console.log("Error al cargar los departamentos");
                console.log(b);
            }    
            locaciones.success = function(data){
                var departamentos = "<option>- Seleccione -</option>";
                $.each(data, function(k, departamento){
                    departamentos += "<option value='" + departamento.Nombre + "'>";
                    departamentos +=  departamento.Nombre;
                    departamentos += "</option>";
                })
                        
                state.html(departamentos);
                
                if(valor == "COLOMBIA" && !self.data("cargado")){
                    if($("#departamentoNac").html() != ""){
                        if($("#departamentoRes").html() != ""){
                            if($("#departamentoCol").html() != ""){
                                $("#departamentoNac").val($("#departamentoNacSeleccionado").val()).change();
                                $("#departamentoRes").val($("#departamentoResSeleccionado").val()).change();
                                $("#departamentoCol").val($("#departamentoColSeleccionado").val()).change();
                            }
                        }
                    }
                    self.data("cargado", "true");
                }
                
            }
                
            locaciones.GetDepartamento(valor);
        }
        
        function cargarCiudades(departamento){
            var self = departamento;
            var place = self.data("place");
            var cities = $('.location-city[data-place="' + place + '"]');
            cities.html("");
            
            var valor = self.val();
            
            var locaciones = new Acaweb.Locaciones();
                
            locaciones.error = function(a,b,c){
                console.log("Error al cargar los ciudades");
                console.log(b);
            }    
            locaciones.success = function(data){
                var municipios = "<option>- Seleccione -</option>";
                $.each(data, function(k, municipio){
                        
                    municipios += "<option value='" + municipio.CodigoMunicipio + "'>";
                    municipios +=  municipio.Nombre;
                    municipios += "</option>";
                })
                        
                cities.html(municipios);
                if(valor == "BOLIVAR" && !self.data("cargado")){
                    if($("#municipioNac").html() != ""){
                        if($("#municipioRes").html() != ""){
                            if($("#municipioCol").html() != ""){
                                $("#municipioNac").val($("#municipioNacSeleccionado").val());
                                $("#municipioRes").val($("#municipioResSeleccionado").val());
                                $("#municipioCol").val($("#municipioColSeleccionado").val());
                                mostrarOcultarBarrio($("#municipioRes"));
                            }
                        }
                    }
                    self.data("cargado", "true");
                }
            }
                    
            locaciones.GetMunicipioByNombreDepartamento(valor);
        }

    });